--  1. Простой UPDATE
UPDATE users SET email = 'john.doe@example.com' WHERE id = 1;
-- Этот запрос обновляет email пользователя с id = 1 на 'john.doe@example.com'.

-- ------------------------------------------------------------------

--  2. UPDATE нескольких столбцов
UPDATE users SET email = 'john.doe@example.com', age = 26 WHERE id = 1;
-- Этот запрос обновляет email и возраст пользователя с id = 1 на 'john.doe@example.com' и 26 соответственно.

-- ------------------------------------------------------------------

--  3. UPDATE с использованием условия
UPDATE users SET status = 'inactive' WHERE last_login < '2023-01-01';
-- Этот запрос обновляет статус пользователей на 'inactive', если их последний вход был до 1 января 2023 года.

-- ------------------------------------------------------------------

--  4. UPDATE с использованием значения из другой таблицы
UPDATE users u
JOIN orders o ON u.id = o.user_id
SET u.last_order_date = o.order_date
WHERE o.order_date = (SELECT MAX(order_date) FROM orders WHERE user_id = u.id);
-- Этот запрос обновляет поле `last_order_date` в таблице `users` на дату последнего заказа из таблицы `orders`.

-- ------------------------------------------------------------------

--  5. UPDATE с использованием подзапроса
UPDATE users SET age = (SELECT AVG(age) FROM users) WHERE id = 1;
-- Этот запрос устанавливает возраст пользователя с id = 1 равным среднему возрасту всех пользователей.

-- ------------------------------------------------------------------

--  6. UPDATE нескольких строк
UPDATE users SET status = 'active' WHERE status = 'pending';
-- Этот запрос обновляет статус всех пользователей со значением 'pending' на 'active'.

-- ------------------------------------------------------------------

--  7. UPDATE с использованием функции
UPDATE users SET email = LOWER(email);
-- Этот запрос преобразует все email адреса пользователей в нижний регистр.

-- ------------------------------------------------------------------

--  8. UPDATE с использованием LIMIT
UPDATE users SET status = 'inactive' WHERE status = 'active' LIMIT 10;
-- Этот запрос обновляет статус первых 10 пользователей со статусом 'active' на 'inactive'.

-- ------------------------------------------------------------------

--  9. UPDATE с использованием ORDER BY
UPDATE users SET status = 'priority' WHERE status = 'active' ORDER BY last_login DESC LIMIT 5;
-- Этот запрос обновляет статус пяти пользователей со статусом 'active' на 'priority', сортируя по последнему входу в систему в порядке убывания.

-- ------------------------------------------------------------------

-- 10. UPDATE с использованием значений по умолчанию
UPDATE users SET age = DEFAULT WHERE age IS NULL;
-- Этот запрос устанавливает возраст по умолчанию для всех пользователей, у которых возраст не указан (NULL).
